package main;
import java.io.*;
import java.util.Date;

public class cInterface {
	public static void main(String[] args) throws IOException {
		// Collator collator = Collator.getInstance(new Locale("vi"));

		int firstSelected, secondSelected, thirdSelected; // three level of
															// user's choose

		cHocSinh[] hs = new cHocSinh[100];
		int nHS = 0; // count for number of hs
		// initialize hs array
		for (int iHS = 0; iHS < hs.length; iHS++) {
	//		hs[iHS] = new cHocSinh();		
			hs[iHS]=null;
		}

		System.out.println("Chọn chức năng bên dưới:");
		System.out.println("1. Xem danh sách học sinh");
		System.out.println("2. Chỉnh sửa danh sách");

		// user's input
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in,
				"UTF-8"));
		try {
			firstSelected = Integer.parseInt(in.readLine());
		} catch (Exception e) {
			System.out.println("Lệnh không hợp lệ!");
			return;
		} // try-catch

/*		hs[0].setHoTen("kía"); hs[0].setMaSo(213); hs[0].setNgaySinh(new Date("12/12/12"));	hs[0].setTenLop("Asd");
		hs[1].setHoTen("aaaaaa");	hs[1].setMaSo(23245); hs[1].setNgaySinh(new Date("1/12/1002"));	hs[1].setTenLop("bbbbbb");
		hs[2].setHoTen("12345678");	hs[2].setMaSo(876543);	hs[2].setNgaySinh(new Date("10/12/1002"));	hs[2].setTenLop("f32f2");
		objFileWriter.obj2file("\\abc.txt", hs);*/
		
		// If don't have database, create it
		File database = new File("\\abc.txt");
		if(!database.exists())
		objFileWriter.obj2file("\\abc.txt", hs);
		// ///////////

		switch (firstSelected) {
		case 1: {
			objFileReader.file2obj("\\abc.txt", hs);
			// count for number of hs
			for (nHS = 0;;) {
				// null object
				if (hs[nHS] != null)
					nHS++;
				else
					break;
			} // end for
			
			System.out.println("Danh sách có " + nHS + " học sinh:");
			for (int iHS = 0; iHS < nHS; iHS++) {
				cHocSinh.printInfo(hs[iHS]);
			} // end for
		} // end case 1
			break;

		case 2: {
			//
			objFileReader.file2obj("\\abc.txt", hs);
			// count for number of hs
			for (nHS = 0;;) {
				// null object
				if (hs[nHS] != null)
					nHS++;
				else
					break;
			} // end for

			System.out.println("Chỉnh sửa học sinh:");
			System.out.println("1. Thêm mới học sinh.");
			System.out.println("2. Tìm kiếm, xóa hoặc sửa thông tin học sinh.");

			try {
				secondSelected = Integer.parseInt(in.readLine());
			} catch (Exception e) {
				System.out.println("Lệnh không hợp lệ!");
				return;
			} // end try-catch

			if (secondSelected == 1) { // user's choose 1: add new hocsinh
				int nNewHocSinh; // number of new hocsinh to create
				System.out.println("Nhập Số lương học sinh cần thêm: ");
				nNewHocSinh = Integer.parseInt(in.readLine()); //
				// loop of create new hocsinh
				for (int i = 0; i < nNewHocSinh; i++) {
					System.out.println("Nhập thông tin cho học sinh thứ: "
							+ (i + 1));

					cHocSinh hsTemp = new cHocSinh();
					cHocSinh.updateInfo(hsTemp, in);

					hs[nHS] = hsTemp;
					objFileWriter.obj2file("\\abc.txt", hs);
					nHS += 1;
				} // end for

				break; // end switch
			} // end if

			else if (secondSelected == 2) { // find, del, edit
				int maso; // maso of focus object
				// get maso hocsinh for user
				System.out.println("Nhập Mã học sinh cần chỉnh sửa: ");
				maso = Integer.parseInt(in.readLine());

				// find out focus object in object array
				for (int check = 0; check < nHS; check++) {
					if (hs[check].getMaSo() == maso) { // if exist
						cHocSinh.printInfo(hs[check]);
						System.out.println("Chọn thao tác: ");
						System.out.println("1. Sửa thông tin.");
						System.out.println("2. Xóa học sinh.");
						try {
							thirdSelected = Integer.parseInt(in.readLine());
						} catch (Exception e) {
							System.out.println("Lệnh không hợp lệ!");
							return;
						} // end try-catch

						if (thirdSelected == 1) {
							cHocSinh.updateInfo(hs[check], in);
							objFileWriter.obj2file("\\abc.txt", hs);
						} // end if thirdSelected== 1
						else if (thirdSelected == 2) {
							System.out.println("Bạn có chắc là muốn xóa?");
							System.out.println("1. Không");
							System.out.println("2. Xóa");
							int confirmDelete;
							try {
								confirmDelete = Integer.parseInt(in.readLine());
							} catch (Exception e) {
								System.out.println("Lệnh không hợp lệ!");
								return;
							} // end try-catch
							if (confirmDelete == 2) {
								for (int current = check; current < nHS; current++) {
									hs[current] = hs[current + 1];
								} // end for
								hs[nHS - 1] = null;
								nHS -= 1;
								objFileWriter.obj2file("\\abc.txt", hs);
								System.out.println("Đã xóa!");
							} // end if confirmDelete == 2
							else if (confirmDelete == 1) {
								System.out.println("Hủy bỏ thao tác!");
								return;
							}
						}// end if thirdSelected==2
						break; // break for

					} // end if
				} // end for
				break; // end switch
			} // end if

		} // end case 2
			break; // break case 2

		default:
			System.out.println("Lệnh không hợp lệ!");
		} // end switch
	}
}
